perm filename TEST.DOC[LSP,JRA]1 blob sn#101898 filedate 1974-05-13 generic text, type T, neo UTF8
␈↓␈↓↓  CONTENTS␈↓ X␈↓


␈↓↓␈↓ ∧ZT A B L E   O F   C O N T E N T S



␈↓↓SECTION␈↓ ¬PAGE␈↓
␈↓␈↓↓␈↓ ↔     1␈↓


␈↓TSL␈α
is␈α
even␈α
simpler,␈α
being␈α
a␈α
straight␈α
SDIO␈α
problem:

␈↓INPUT␈α
prefix␈α
::=␈α
var␈↓βI␈↓␈α
::=␈α
f_args␈↓βI␈↓

␈↓f_args␈↓βI␈↓␈α
::=␈α
struct[fn␈↓βI␈↓:id;args␈↓βI␈↓:terms␈↓βI␈↓]

␈↓terms␈↓βI␈↓␈α
::=␈α
seq[prefix]

␈↓OUTPUT␈α
postfix␈α
::=␈α
var␈↓βO␈↓␈α
::=␈α
f_args␈↓βO␈↓

␈↓f_args␈↓βO␈↓␈α
::=␈α
struct[args␈↓βO␈↓:terms␈↓βO␈↓;fn␈↓βO␈↓:id]

␈↓terms␈↓βO␈↓␈α
::=␈α
seq[postfix]

␈↓TRANSFORMATION␈α
var␈↓βO␈↓␈α
=␈α
var␈↓βI␈↓␈α
fn␈↓βO␈↓␈α
=␈α
fn␈↓βI␈↓␈α
args␈↓βO␈↓␈α
=␈α
args␈↓βI␈↓

␈↓PROGRAM FOR TRANSFORMATION

␈↓pre_to_post[e;prefix]postfix
␈↓ generic(e)
␈↓        [var␈↓βI␈↓] =>e
␈↓        [f_args␈↓βI␈↓(u,v)] => f_args␈↓βO␈↓(arg_list(v),u)
␈↓ end;

␈↓arg_list(a:terms␈↓βI␈↓)terms␈↓βO␈↓
␈↓ on(a;*,pre_to_post;ε,terms␈↓βO␈↓)



␈↓INFIX␈α
TO␈α
POSTFIX␈α
TRANSLATOR␈α
WITH␈α
USUSAL␈α
PRECEDENCE


␈↓        INPUT

␈↓exp     ::= exp + term
␈↓        ::= term

␈↓term    ::= term * fact
␈↓        ::= fact

␈↓fact    ::= var
␈↓        ::= const
␈↓        ::= (exp)
␈↓␈↓↓2  ␈↓ X␈↓



␈↓        ABSTRACT SYNTAX

␈↓exp     ::= sum
␈↓        ::= term

␈↓term    ::= prod
␈↓        ::= fact

␈↓fact    ::= var
␈↓        ::= const
␈↓        ::= paren

␈↓sum     ::= struct[add1:exp;add2:term]

␈↓prod    ::= struct[pr1:term;pr2:fact]

␈↓paren   ::= struct[exp]


␈↓        OUTPUT

␈↓post    ::= var
␈↓        ::= const
␈↓        ::= post post *
␈↓        ::= post post +


␈↓        ABSTRACT SYNTAX

␈↓post    ::= var
␈↓        ::= const
␈↓        ::= postprod
␈↓        ::= postsum

␈↓postsum ::= struct[ar1:post;ar2:post]
␈↓postprod::= struct[ar1:post;ar2:post]
␈↓␈↓↓␈↓ ↔     3␈↓



␈↓        TRANSFORMATION : T

␈↓var     => var
␈↓const   => const
␈↓sum     => postsum
␈↓prod    => postprod


␈↓problem for APG: write T such that T(exp) = post


␈↓        THE PROGRAM

␈↓inf_to_post(e:exp)post
␈↓ generic(e)
␈↓        sum(u,v) => postsum(inf_to_post(u),trans_term(v))
␈↓        term     => trans_term(e)
␈↓ end

␈↓trans_term(u:term)post
␈↓ generic(u)
␈↓        prod(x,y) => postprod(trans_term(x),trans_fact(y))
␈↓        fact      => trans_fact(u)
␈↓ end

␈↓trans_fact(x:fact)post
␈↓ generic(x)
␈↓        var => x
␈↓        const => x
␈↓        paren(u) => inf_to_post(u)
␈↓ end